package utils;

import android.annotation.SuppressLint;

import java.util.Random;

/**
 * 随机数生成器
 * 类名称：RandomNumProcessor
 * 类描述:
 * 创建人：heguang
 * 创建时间：2015年6月10日 下午5:20:06
 * 修改人：heguang
 * 修改时间：2015年6月10日 下午5:20:06
 * 修改备注:
 *
 * @see
 */
public final class RandomNumProcessor {

    /**
     * 默认长度
     */
    private static final int DEFAULT_LEN = 10;

    /**
     * 所有字符
     */
    private static final String ALL_CHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    /**
     * 根据指定str随机取指定长度随机数
     *
     * @param str 指定的字符串
     * @param
     * @return 随机数
     * @Exception
     */
    @SuppressLint("NewApi")
    public static String randomByStr(String str, int len) {
        if (null != str && !str.isEmpty()) {
            StringBuffer sb = new StringBuffer();
            Random random = new Random();
            for (int i = 0; i < len; i++) {
                sb.append(str.charAt(random.nextInt(str.length())));
            }
            return sb.toString();
        }

        return random(len);
    }

    /**
     * 根据指定str随机取@see {@link RandomNumProcessor.DEFAULT_LEN}长度随机数
     *
     * @param str 指定的字符串
     * @param
     * @return 随机数
     * @Exception
     */
    @SuppressLint("NewApi")
    public static String randomByStr(String str) {
        if (null != str && !str.isEmpty()) {
            StringBuffer sb = new StringBuffer();
            Random random = new Random();
            for (int i = 0; i < DEFAULT_LEN; i++) {
                sb.append(str.charAt(random.nextInt(str.length())));
            }
            return sb.toString();
        }

        return random();
    }

    /**
     * 从0-9a-zA-Z中随机生成指定长度随机数
     *
     * @param len 加密key长度
     * @return 加密key
     * @Exception
     */
    public static String random(int len) {
        StringBuffer sb = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < len; i++) {
            sb.append(ALL_CHAR.charAt(random.nextInt(ALL_CHAR.length())));
        }
        return sb.toString();
    }

    /**
     * 从0-9a-zA-Z中随机生成@see {@link RandomNumProcessor.DEFAULT_LEN}长度随机数
     *
     * @param len 加密key长度
     * @return 加密key
     * @Exception
     */
    public static String random() {
        StringBuffer sb = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < DEFAULT_LEN; i++) {
            sb.append(ALL_CHAR.charAt(random.nextInt(ALL_CHAR.length())));
        }
        return sb.toString();
    }
}
